package cn.com.ejiakanghu.dto;

import org.linlinjava.litemall.db.domain.AgedmallGoodsSpecificationInfo;
import org.linlinjava.litemall.db.domain.LitemallGoodsSpecification;

import java.util.List;
import java.util.stream.Collectors;

public class GoodsSkuTimeSpecInfo {
    /**
     * 规格分类ID，唯一
     */
    private int id;
    /**
     * 规格分类名称，例如：租期、使用时长
     */
    private String name;
    /**
     * 规格分类说明，例如：请选择租期
     */
    private String desc;
    /**
     * 规格分类时间单位
     * 值可能性：
     * day 	| [string] 	| 时间单位：天	| 默认值
     * hour 	| [string] 	| 时间单位：小时
     * minute 	| [string] 	| 时间单位：分钟
     */
    private String unit;
    /**
     * 自定义时限制的最小值，必须大于0
     * 值可能性：
     * 0 	| [number] 	| 仅单选 | 默认值
     * 1 	| [number] 	| 可多选
     */
    private int min;
    /**
     * 自定义时限制的最大值，0表示不限制最大值
     */
    private int max;

    /**
     * 规格选项列表
     */
    private List<GoodsSkuLeaseSpecItemInfo> list;

    public static GoodsSkuTimeSpecInfo getInstance(AgedmallGoodsSpecificationInfo goodsSpecificationInfo, List<LitemallGoodsSpecification> goodsSpecificationList) {
        GoodsSkuTimeSpecInfo goodsSkuTimeSpecInfo = new GoodsSkuTimeSpecInfo();
        goodsSkuTimeSpecInfo.setId(goodsSpecificationInfo.getId());
        goodsSkuTimeSpecInfo.setName(goodsSpecificationInfo.getSpecName());
        goodsSkuTimeSpecInfo.setDesc(goodsSpecificationInfo.getDesc());
        goodsSkuTimeSpecInfo.setUnit(goodsSpecificationInfo.getUnit());
        goodsSkuTimeSpecInfo.setMin(goodsSpecificationInfo.getMin());
        goodsSkuTimeSpecInfo.setMax(goodsSpecificationInfo.getMax());

        List<GoodsSkuLeaseSpecItemInfo> list = goodsSpecificationList.stream()
                .map(p -> {
                    GoodsSkuLeaseSpecItemInfo goodsSkuLeaseSpecItemInfo = new GoodsSkuLeaseSpecItemInfo();
                    goodsSkuLeaseSpecItemInfo.setLen(Integer.parseInt(p.getValue()));
                    goodsSkuLeaseSpecItemInfo.setImage(p.getPicUrl());
                    return goodsSkuLeaseSpecItemInfo;
                }).collect(Collectors.toList());
        goodsSkuTimeSpecInfo.setList(list);

        return goodsSkuTimeSpecInfo;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public int getMin() {
        return min;
    }

    public void setMin(int min) {
        this.min = min;
    }

    public int getMax() {
        return max;
    }

    public void setMax(int max) {
        this.max = max;
    }

    public List<GoodsSkuLeaseSpecItemInfo> getList() {
        return list;
    }

    public void setList(List<GoodsSkuLeaseSpecItemInfo> list) {
        this.list = list;
    }
}
